Functional Testing:
	Functional Testing is the process of rigorously testing the functionality and behavior of each and every component of the software application.
The extended form of functional testing that covers the user interface is also known as UI Testing.

Build Handoff & Test Case Selection:

When the development team completes coding for the selected requirements, they create a build and share it with the testing team along with a Release Note (RN) for testing purposes.

The QA team will:
Review the Release Note.
Select relevant test cases based on the scope of the current build.

The following types of test cases are typically selected:
(a) Functional Test Cases
(b) Integration Test Cases
(c) System Test Cases

Begin with executing functional test cases as part of Functional Testing.

General Testing Guidelines
Always perform both positive and negative testing.

Example: Functional Testing – Facebook (FB) Registration Page
FB Registration Page Requirements cover the following components:

First Name field: Accepts characters only, mandatory, 8–15 characters.
Surname field: Optional, accepts characters and special characters.
Email or Phone Number field: Accepts numbers, characters, and special characters (e.g., @, ., _).
Password field: Accepts characters, numbers, special characters; 8–15 characters; encrypted.
Retype Password field: Same as password, encrypted.
Gender radio buttons.
DOB drop-down fields.
Sign Up button.

Sample Functional Test Cases for FB Registration Page
1. UI Component Existence Check
Verify that the following components exist:

First Name field
Surname field
Email/Phone Number field
Password field
Retype Password field
Gender radio buttons (Male, Female, Other)
DOB drop-downs
Sign Up button

2. Positive End-to-End Scenario
Enter valid details in all fields.
Click Sign Up.
Verify that registration is successful.

3. Component-wise Functional Test Cases
(a) First Name Field
a.1: Asterisk (*) symbol should be displayed (✓)
a.2: Enter only characters (✓)
a.3: Enter characters between 8–15 characters (✓)
a.4: Enter <8 or >15 characters (✗)
a.5: Enter only numbers (✗)
a.6: Enter alphanumeric or special characters (✗)
a.7: Leave blank (✗)

(b) Surname Field
b.1: Leave blank (✓)
b.2: Enter characters of 8–15 length (✓)
b.3: Enter special characters or alphanumeric (✓)
b.4: Enter numbers (✓)

(c) Email or Phone Number Field
c.1: Enter valid email with characters and @ (✓)
c.2: Enter valid 10-digit phone number (✓)
c.3: Enter valid email with _ or . (✓)
c.4: Enter special characters like #, $, , (✗)
c.5: Enter email without @ (✗)
c.6: Enter phone number <10 digits (✗)

Important Testing Principles
=> Always perform both positive (+ve) and negative (-ve) testing.
=> Always perform positive testing first. If the software works as expected, proceed with negative testing.
=> While writing test cases, include both +ve and -ve scenarios.
=> Perform optimized testing – avoid under-testing or over-testing.

Definitions
Q: What is Positive Testing?
A: Testing the application with valid input data is known as positive testing.

Q: What is Negative Testing?
A: Testing the application with invalid input data is known as negative testing.

Defect Logging & Reporting
If a QA finds a defect while executing functional test cases, it should be logged immediately using a defect tracking tool, such as:

JIRA
Bugzilla
HP ALM
TFS
Mantis

Consolidated Test Execution Report Sample
Metric	Count
Total Test Cases Selected	:	100
Test Cases Executed			:	50
Test Cases Passed			:	45
Test Cases Failed			:	5
Test Cases Blocked			:	10
Test Cases Pending			:	40
Defects Logged				:	3